package br.com.unip.menudroidweb.facade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import br.com.unip.menudroidweb.dao.FormaPagamentoDAO;
import br.com.unip.menudroidweb.model.FormaPagamento;

import com.google.gson.Gson;

@Path("/formapagamento")
public class FormaPagamentoFacade implements Serializable {
	private static final long serialVersionUID = -3056403106089540357L;
	private FormaPagamentoDAO formaPgtoDAO = new FormaPagamentoDAO();

	public void createFormaPagamento(FormaPagamento formaPgto) {
		formaPgtoDAO.beginTransaction();
		formaPgtoDAO.save(formaPgto);
		formaPgtoDAO.commitAndCloseTransaction();
	}

	public void updateFormaPagamento(FormaPagamento formaPgto) {
		formaPgtoDAO.beginTransaction();
		FormaPagamento persistedFormaPagamento = formaPgtoDAO.find(formaPgto.getIdFormaPagamento());
		persistedFormaPagamento.setDescricao(formaPgto.getDescricao());
		formaPgtoDAO.update(persistedFormaPagamento);
		formaPgtoDAO.commitAndCloseTransaction();
	}

	public FormaPagamento findFormaPagamento(int formaPgtoId) {
		formaPgtoDAO.beginTransaction();
		FormaPagamento formaPgto = formaPgtoDAO.find(formaPgtoId);
		formaPgtoDAO.closeTransaction();
		return formaPgto;
	}

	public List<FormaPagamento> listAll() {
		formaPgtoDAO.beginTransaction();
		List<FormaPagamento> formaPgto = formaPgtoDAO.findAll();
		formaPgtoDAO.closeTransaction();
		return formaPgto;
	}

	public void deleteFormaPagamento(FormaPagamento formaPgto) {
		formaPgtoDAO.beginTransaction();
		FormaPagamento persistedFormaPagamento = formaPgtoDAO.findReferenceOnly(formaPgto.getIdFormaPagamento());
		formaPgtoDAO.delete(persistedFormaPagamento);
		formaPgtoDAO.commitAndCloseTransaction();
	}
	
//	Metodos WS Android
	
	@GET
	@Path("/listar")
	@Produces("application/json")
	public String listarTodosAndroid() {
		formaPgtoDAO.beginTransaction();
		ArrayList<FormaPagamento> formaPagamento = (ArrayList<FormaPagamento>) formaPgtoDAO.findAll();
		formaPgtoDAO.closeTransaction();
		return new Gson().toJson(formaPagamento);
	}
	
	@GET
	@Path("/listar/{descricao}")
	@Produces("application/json")
	public String findFormaPagamentoByDescricao(@PathParam("descricao") String descricao) {
		formaPgtoDAO.beginTransaction();
		FormaPagamento formaPagamento = formaPgtoDAO.findFormaPagamentoByDescricao(descricao);
		formaPgtoDAO.closeTransaction();
		return new Gson().toJson(formaPagamento);
	}
	
	
	
	
	
}
